このプロシージャによって、表のサイズが推定されます。表の推定バイト数が単一のDOUBLE列を持つ単一行として返されます。表は、表名または完全修飾された表名のいずれかとして指定できます。nrowsパラメータがNULL以外の場合、現在の表の統計が指定した行数まで拡大したものと想定して表のサイズが推定されます。nrowsパラメータがNULLの場合、表のサイズは現在の行数を使用して推定されます。
現在の表のコンテンツをスキャンして、VARBINARYおよびVARCHAR列の平均サイズが判断されます。表が空の場合、VARBINARY列とVARCHAR列の平均サイズは、宣言されている最大サイズの半分になるように推定されます。ttSizeによって計算される推定値には、表、VARBINARY列とVARCHAR列、およびその表に定義された索引の記憶域が含まれます。
NULL以外のfrac値(0と1の間)を指定することによって、表のスキャンを回避できます。この値を使用して、可変長列の平均サイズを推定します。frac値を各可変長列の最大サイズに掛けて、VARBINARY列またはVARCHAR列の推定平均サイズを計算します。fracパラメータを指定しないと、表内の既存の行がスキャンされ、既存の行における可変長列の平均長が使用されます。fracを省略した場合、表に行が存在しないと、fracの値は0.5であると想定されます。
アクセス制御がTimesTenのインスタンスに対して有効である場合、このプロシージャにはDDL権限が必要です。
ttSizeには、次のパラメータがあります。
パラメータ | データ型 | 説明 |
tblName | Char(61) NOT NULL | アプリケーション表の名前。所有者を含めることができます。このパラメータは必須です。 |
nRows | INTEGER | 推定する表内の行数。このパラメータはオプションです。 |
frac | DOUBLE | VARBINARY列またはVARCHAR列のサイズの推定される平均端数。このパラメータはオプションです。 |
ttSizeは次の結果セットを返します。
CALL ttSize('ACCTS', 1000000, NULL); CALL ttSize('ACCTS', 30000, 0.8); CALL ttSize('SALES.FORECAST', NULL, NULL);ttSizeを使用する場合、コマンドを実行した後、結果をフェッチする必要があります。次に例を示します。
rc = SQLExecDirect(hstmt, "call ttSize('SalesData', 250000, 0.75)", SQL_NTS); rc = SQLBindColumn(hstmt, 1, SQL_C_DOUBLE, &size, sizeof double, &len); rc = SQLFetch(hstmt); rc = SQLFreeStmt(hstmt, SQL_CLOSE);
. . . . . . String URL="jdbc:timesten:MyDataStore"; Connection con; double tblSize=0; . . . . . . con = DriverManager.getConnection(URL); CallableStatement cStmt = con.prepareCall(" {CALL ttSize('SalesData', 250000, 0.75) }"); if( cStmt.execute() ) { rs=cStmt.getResultSet(); if (rs.next()) { tblSize=rs.getDouble(1); } rs.close(); } cStmt.close(); con.close();
ttSizeプロシージャを使用すると、行が完全にロードされたときに表がどの程度大きくなるかを、少量のサンプルをもとに推定できます。最適な結果を得るには、少なくとも1,000の典型的な行を表にロードすることをお薦めします。